package com.cskaoyan.javase.basic._4string;

/**
 * 简单讲解一下String类的用法
 * 首先它是一个引用数据类型,它和基本数据类型是不同的
 * String类型的赋值可以直接使用字符串字面值常量
 *
 * 对于String类而言,存在两种比较的方式:
 *      1."=="比较,比较的是地址(后面再详谈)
 *      2.比较内容
 *          "字符串常量或者字符串变量".equals(""字符串常量或者字符串变量"")
 *          以上方式用于比较字符串内容
 *          只要内容一致就返回true,否则返回false
 *          不需要考虑地址问题
 *
 * @since 10:45
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        // 以下比较返回true,说明s1和s2的地址是一样的
        System.out.println(s1 == s2);
        // 以下比较也返回true,说明s1和s2的字符串内容是一样的
        System.out.println(s1.equals(s2));

        // String毕竟是引用数据类型,它的赋值还可以依赖于"new"关键字
        // s3字符串的内容仍然是hello
        String s3 = new String("hello");
        // 由于内容一致,以下比较仍然返回true
        System.out.println(s1.equals(s3));

        // s1和s3的地址是不同的,返回false
        System.out.println(s3 == s1);
        // s1和s2的地址也是不同的,也返回false
        System.out.println(s3 == s2);
    }
}
